var exec = require("child_process").exec;
var querystring = require("querystring");
var fs = require("fs");
var fs = require("fs");
var formidable = require("formidable");

function start(response, request) {
	console.log("Request handler 'start' was called.");

	// var body = '<html>'+
	//     '<head>'+
	//     '<meta http-equiv="Content-Type" content="text/html; '+
	//     'charset=UTF-8" />'+
	//     '</head>'+
	//     '<body>'+
	//     '<form action="/upload" method="post" enctype="multipart/form-data">'+
	//     '<input name="upload" type="file">'+
	//     '<input type="submit" value="upload file" />'+
	//     '</form>'+
	//     '</body>'+
	//     '</html>';

	var body = '<html>'+
	    '<head>'+
	    '<meta http-equiv="Content-Type" content="text/html; '+
	    'charset=UTF-8" />'+
	    '</head>'+
	    '<body>'+
	    '<form action="/upload" enctype="multipart/form-data" '+
	    'method="post">'+
	    '<input type="file" name="upload" multiple="multiple">'+
	    '<input type="submit" value="Upload file" />'+
	    '</form>'+
	    '</body>'+
	    '</html>';


    response.writeHead(200, {"Content-Type": "text/html"});
    response.write(body);
    response.end();


	/*exec('npm install',
		function(error, stdout, stderr) {
			response.writeHead(200, {
				"Content-Type": "text/plain"
			});
			response.write(stdout);
			response.write(stderr);
			response.end();
		});*/


/*	function sleep(milliSeconds) {
		var startTime = new Date().getTime();
		while (new Date().getTime() < startTime + milliSeconds);
	}

	sleep(10000);

	return "Hello Start";*/
}

function upload(response, request) {
	console.log("Request handler 'upload' was called.");

	var form = new formidable.IncomingForm();
	form.uploadDir = "tmp"; //必须写上
	form.parse(request, function(error, fields, files){
		fs.renameSync(files.upload.path, "./tmp/test.png");
		response.writeHead(200, {"Content-Type": "text/html"});
		response.write("<img src='/show' />");
    	response.end();
	});

/*	var body = '<html>'+
	    '<head>'+
	    '<meta http-equiv="Content-Type" content="text/html; '+
	    'charset=UTF-8" />'+
	    '</head>'+
	    '<body>'+
	    'You sent:'+
	    querystring.parse(postData).text + 
	    '</body>'+
	    '</html>';
	response.writeHead(200, {"Content-Type": "text/html"});
	response.write(body);
	response.end();*/
}




function show(response, request){
	console.log("Request handler 'show' was called.");
	fs.readFile("./tmp/test.png", "binary", function(error, file){
		if(error){
			response.writeHead(500, {"Content-Type" : "text/plain"});
			response.write(error + "\n");
      		response.end();
		}else{
		 	response.writeHead(200, {"Content-Type": "image/png"});
		    response.write(file, "binary");
		    response.end();
		}
	});
}

exports.start = start;
exports.upload = upload;
exports.show = show;


/*var querystring = require("querystring"),
    fs = require("fs"),
    formidable = require("formidable");

function start(response) {
  console.log("Request handler 'start' was called.");

  var body = '<html>'+
    '<head>'+
    '<meta http-equiv="Content-Type" content="text/html; '+
    'charset=UTF-8" />'+
    '</head>'+
    '<body>'+
    '<form action="/upload" enctype="multipart/form-data" '+
    'method="post">'+
    '<input type="file" name="upload" multiple="multiple">'+
    '<input type="submit" value="Upload file" />'+
    '</form>'+
    '</body>'+
    '</html>';

    response.writeHead(200, {"Content-Type": "text/html"});
    response.write(body);
    response.end();
}

function upload(response, request) {
  console.log("Request handler 'upload' was called.");

  var form = new formidable.IncomingForm();
  form.uploadDir = "tmp";

  console.log("about to parse");
  form.parse(request, function(error, fields, files) {
    console.log("parsing done");
    fs.renameSync(files.upload.path, "./tmp/test.png");
    console.log(files);
    response.writeHead(200, {"Content-Type": "text/html"});
    response.write("received image:<br/>");
    response.write("<img src='/show' />");
    response.end();
  });
}

function show(response) {
  console.log("Request handler 'show' was called.");
  fs.readFile("./tmp/test.png", "binary", function(error, file) {
    if(error) {
      response.writeHead(500, {"Content-Type": "text/plain"});
      response.write(error + "\n");
      response.end();
    } else {
      response.writeHead(200, {"Content-Type": "image/png"});
      response.write(file, "binary");
      response.end();
    }
  });
}

exports.start = start;
exports.upload = upload;
exports.show = show;*/